package compilers.AST.expression;

import compilers.AST.Node;
import compilers.AST.types.MyType;
import compilers.AST.types.TypeSpecifier;
import compilers.symbolTable.SymbolTable;
import compilers.symbolTable.SymbolTableScope;

public abstract class Term extends Node {

	public abstract int getResultType(SymbolTableScope currentScope);
	public abstract int getOriginalType(SymbolTableScope currentScope);
	public abstract boolean isConstant(SymbolTableScope currentScope);
	public abstract MyType calculateValue(SymbolTableScope currentScope);

	public void setConvertTo(TypeSpecifier type) {}
	
	public int getAddress(SymbolTableScope currentScope) {
		return -1;
	}
	
	public Term() {
		
	}
	
	public Term(int lineNr) {
		super(lineNr);
	}
	
	public abstract boolean isArray(SymbolTableScope currentScope);
	public abstract String getArrayIdent(SymbolTableScope currentScope);
	
}
